package com.cxs.qrwidgedemo.util;

import ohos.ai.cv.common.ConnectionCallback;
import ohos.ai.cv.common.VisionManager;
import ohos.ai.cv.qrcode.IBarcodeDetector;
import ohos.app.Context;
import ohos.media.image.ImageSource;
import ohos.media.image.PixelMap;

public class QRUtils {

    public static long formId;

    public static void setFormId(long formId) {
        QRUtils.formId = formId;
    }

    public static long getFormId() {
        return formId;
    }

    public static PixelMap createQR(Context context, String str) {
        final int QR_LENGTH = 800;
        // 定义码生成图像的尺寸，并根据图像大小分配字节流数组空间。
        byte[] bytes = new byte[QR_LENGTH * QR_LENGTH * 4];
        // 实例化IBarcodeDetector接口
        IBarcodeDetector barcodeDetector = VisionManager.getBarcodeDetector(context);
        // 调用IBarcodeDetector的detect()方法，根据输入的字符串信息生成相应的二维码图片字节流。如果返回值为0，表明调用成功。
        int detect = barcodeDetector.detect(str, bytes, QR_LENGTH, QR_LENGTH);
        if (detect == 0) {
            // 从字节流 bytes 创建图像数据源 ImageSource
            ImageSource imageSource = ImageSource.create(bytes, null);
            // 解码原始图像
            PixelMap pixelmap = imageSource.createPixelmap(null);
            // 释放码生成能力
            int release = barcodeDetector.release();
            // 断开与能力引擎的连接
            VisionManager.destroy();
            return pixelmap;
        }
        return null;
    }

    private QRUtils(){}
}
